//
// Created by sjjmw on 2/23/2022.
//

#pragma clang diagnostic push
#pragma ide diagnostic ignored "EndlessLoop"
#ifndef LEETCODE__17_H
#define LEETCODE__17_H

//todo
// 假设有k个人质和k个绑匪围成一圈。人质的编号从1到k，绑匪的编号从k+1到2k。
// 从编号1开始，每次从其中选出第m个人(隔m-1选出一人)出列。
// 希望求出m的最小值，使得最先出列的k个人都是绑匪，即都是编号从k+1到2k的人。
#include "iostream"
#include "vector"
#include "string.h"
//给你一条马路的长度和若干个车站的位置，请你用程序计算出把树移走后，马路上还剩多少棵树。

int main(){

    int l,m;
    while(scanf("%d %d",&l,&m)!=EOF){

//        std::vector<char> tag(l);
        char tag[l];
        memset(tag,0,l);
        while(m){
            int b,e;
            std::cin>>b>>e;
            if(b>e){
                std::swap(b,e);
            }
            for(int i=b;i<=e;i++){
                tag[i]=1;
            }
            m--;
        }
        int cnt=0;
        for(auto &a :tag){
            if(!a){
                cnt++;
            }
        }
        if(cnt==0){
            cnt--;
        }
        printf("%d\n",cnt+1);
    }
//    while(1){}
    return 0;
}

#endif //LEETCODE__17_H

#pragma clang diagnostic pop